package arithmetic;

import java.util.Scanner;

/**
 * 知识点
 * 1.in.nextInt和in.nextLine不建议混合使用
 * 描述
 * 数据表记录包含表索引index和数值value（int范围的正整数），请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照index值升序进行输出。
 *
 *
 * 提示:
 * 0 <= index <= 11111111
 * 1 <= value <= 100000
 *
 * 输入描述：
 * 先输入键值对的个数n（1 <= n <= 500）
 * 接下来n行每行输入成对的index和value值，以空格隔开
 *
 * 输出描述：
 * 输出合并后的键值对（多行）
 *
 * 示例1
 * 输入：
 * 4
 * 0 1
 * 0 2
 * 1 2
 * 3 4
 * 复制
 * 输出：
 * 0 3
 * 1 2
 * 3 4
 * 复制
 * 示例2
 * 输入：
 * 3
 * 0 1
 * 0 2
 * 8 9
 * 复制
 * 输出：
 * 0 3
 * 8 9
 */
public class TestHW8 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        try{
            int num = Integer.parseInt(in.nextLine());
            if(num == 0){
                return;
            }
            int[][] arr = test1(num, in);
            arr = test2(arr);
            if(arr.length == 1){
                System.out.println(arr[0][0]+" "+arr[0][1]);
            }
            test3(arr);

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static int[][] test1(int num, Scanner in){
        int[][] arr = new int[num][2];
        for(int i = 0; i < num; i ++){
            String[] str = in.nextLine().split(" ");
            arr[i][0] = Integer.parseInt(str[0]);
            arr[i][1] = Integer.parseInt(str[1]);
        }
        return arr;
    }

    //排序
    public static int[][] test2(int[][] arr){
        for(int i = 1; i < arr.length; i++){
            int pre = i-1;
            while(pre>=0 && arr[pre][0]>arr[pre+1][0]){
                int[] temp = arr[pre];
                arr[pre] = arr[pre+1];
                arr[pre+1] = temp;
                pre--;
            }
        }
        return arr;
    }
    //输出合并结果
    public static void test3(int[][] arr){
        for(int i = 1; i < arr.length; i++){
            if(arr[i-1][0] != arr[i][0]){
                System.out.println(arr[i-1][0]+" "+arr[i-1][1]);
                if(i == arr.length-1) System.out.println(arr[i][0]+" "+arr[i][1]);
            }else if(arr[i-1][0]==arr[i][0]){
                arr[i][1] += arr[i-1][1];
                if(i==arr.length-1) System.out.println(arr[i][0]+" "+arr[i][1]);
            }
        }
    }
}
